package com.zhijian.medical.service;

import com.zhijian.medical.entity.po.CnasFile;
import com.zhijian.medical.entity.vo.request.CnasFileSearchVo;
import com.zhijian.medical.entity.vo.response.CnasFileAllVo;
import com.zhijian.medical.entity.vo.response.CnasFileVo;
import com.zhijian.medical.util.Page;

import java.util.List;

/**
 * cnas认可相关文件 业务处理层
 *
 * @author HCG
 * @version 1.0
 * @date 2023-03-10 17:47:33
 */
public interface CnasFileService {

    /**
     * 主键查询
     *
     * @param id
     * @return
     */
    CnasFile selectById(Long id);

    /**
     * 主键查询vo
     *
     * @param id
     * @return
     */
    CnasFileVo selectVoById(Long id);

    /**
     * 按照主键删除
     *
     * @param id
     */
    void deleteById(Long id);

    /**
     * 新增
     *
     * @param cnasFile
     * @return
     */
    Long insert(CnasFile cnasFile);

    /**
     * 更改
     *
     * @param cnasFile
     * @return
     */
    boolean update(CnasFile cnasFile);

    /**
     * 动态修改
     *
     * @param record
     * @return
     */
    boolean updateByPrimaryKeySelective(CnasFile record);

    /**
     * 总数
     *
     * @param cnasFileSearchVo
     * @return
     */
    Integer count(CnasFileSearchVo cnasFileSearchVo);

    /**
     * 列表
     *
     * @param cnasFileSearchVo
     * @return
     */
    List<CnasFileVo> selectList(CnasFileSearchVo cnasFileSearchVo);

    /**
     * 分页查询
     *
     * @param cnasFileSearchVo
     * @return
     */
    Page<CnasFileVo> selectPage(CnasFileSearchVo cnasFileSearchVo);

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities 实例对象列表
     * @return 影响行数
     */
    boolean insertBatch(List<CnasFile> entities);

    /**
     * 添加科室自己编写的相应管理要素的文件
     *
     * @param sortNameId
     * @param fileId
     * @return
     */
    boolean addKsSlefFile(Long sortNameId, Long fileId);

    /**
     * 添加文件具体内容中相关政策性文件
     *
     * @param sortNameId
     * @param fileId
     * @return
     */
    boolean addXgzcsFile(Long sortNameId, Long fileId);

    /**
     * 添加表格文件
     *
     * @param sortNameId
     * @param fileId
     * @param parentKsId
     * @return
     */
    boolean addBgFile(Long sortNameId, Long fileId, Long parentKsId);

    /**
     * 查出一个序号，所有包含的文件
     *
     * @param cnasNameId
     * @return
     */
    CnasFileAllVo selectCnasFileAllVo(Long cnasNameId);

}